package com.flute.haflute.jobbox.base;

import java.io.Serializable;
import java.rmi.Remote;

/**
 * 主从节点作业的中心节点控制器：主任务控制器，对应于集群的一个物理节点SM(JM)
 */
public interface CloudJobCenterController {
	/**
	 * 获得主节点（中心节点）的资源代理，将传给子节点作为资源交互、通信的代理
	 */
	public Remote getJobAgent();

	/**
	 * 启动中心节点的任务
	 * 
	 * @param reporter
	 *            作业任务进度监控器
	 */
	public boolean start(StatusReporter reporter);

	/**
	 * 集群通知作业停止<br>
	 * 
	 * @return true 停止成功<br>
	 *         false 无法正常停止<br>
	 */
	public boolean end();

	/**
	 * 初始化作业环境
	 * 
	 * @param conf
	 */
	public void initJob(Serializable conf);
}
